perm filename BASIC.PUB[T,LSP]1 blob sn#616182 filedate 1981-10-03 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	. DEVICE XGP
C00008 00003	.<< Print in //italics/ or boldface. >>
C00010 00004	.<< Print page headings on XGP (using boldface) before new page started. >>
C00012 00005	.<< Set line spacing to new value. >>
C00014 00006	.<< Start text justification. >>
C00015 00007	.<< Set up for body of text. >>
C00016 ENDMK
C⊗;
. DEVICE XGP;
.
.
. SIDES ← 1;
.<< Set up fonts and text responses for device selected. >>
.
.
.<< Turn on quote character ("α") and font switching character ("%"). >>
.
.TURN ON "α%";
.
.<< Declare Baskerville fonts, FIX25 for special characters, and SUP for footnote
.numbers. >>
.
.FONT 1 "FRACT2[T,LYN]";     <<modified BASL30>>
.FONT 2 "BASI30";
.FONT 3 "BASB30";
.FONT 4 "FIX25";
.FONT 5 "SUP";
. FONT 6 "DIA2.FNT[T,LYN]";
. FONT 7 "MTEXT.FNT[T,LYN]";
.
.
.<< a sharp, flat, and alla breve time signature.  >>
.
.AT "##" ⊂ "%7α#%*"; ⊃;
.AT "#b" ⊂ "%7αb%*"; ⊃;
.AT "#C" ⊂ "%7αC%*"; ⊃;
.AT "#≠" ⊂ "%7α≠%*"; ⊃;
.AT "#4" ⊂ "%64%*"; ⊃;
.AT "#≥" ⊂ "%6≥%*"; ⊃;
. 
.
.<< Put in ligatures in all three Baskerville fonts. >>
.
.AT "ffl" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α∞" ELSE "αfαfαl"; ⊃;
.AT "ffi" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α≠"  ELSE "αfαfαi"; ⊃;
.AT "ff"  ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α≥"  ELSE "αfαf"; ⊃;
.AT "fi"  ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α≡" ELSE "αfαi"; ⊃;
.AT "fl"  ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α∨"  ELSE "αfαl"; ⊃;
.
.<< Provide Stanford ASCII characters not available in Baskerville. >>
.
.AT "'%" ⊂ "α%"; ⊃;
.AT "¬" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α¬%*" ELSE "α¬"; ⊃;
.AT "ε" ⊂ IF THISFONT = 1 THEN "%2αε%*" ELSE "αε"; ⊃;
.AT "∀" ⊂ IF THISFONT = 1 THEN "%2α∀%*" ELSE "α∀"; ⊃;
.AT "~" ⊂ IF THISFONT = 2 THEN "%1α~%*" ELSE "α~"; ⊃;
.AT "≠" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α≠%*" ELSE "α≠"; ⊃;
.AT "≥" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α≥%*" ELSE "α≥"; ⊃;
.AT "≡" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α≡%*" ELSE "α≡"; ⊃;
.
.<< Convert two successive Baskerville hyphens into em dash. >>
.
.AT "--"  ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α¬" ELSE "α--"; ⊃;
.
.<< fix .) constructs.  >>
.
.<<AT ".)" ⊂ ".) " ⊃;  >>
.
.
.
.<< make up diacriticals >>
.
.AT ":a" ⊂ "%6α:%*a" ⊃;
.AT ":o" ⊂ "%6α:%*o" ⊃;
.AT ":u" ⊂ "%6α:%*u" ⊃;
.AT "'a" ⊂ "%6α'%*a" ⊃;
.AT "'e" ⊂ "%6α'%*e" ⊃;
.AT "'o" ⊂ "%6α'%*o" ⊃;
.AT "'u" ⊂ "%6α'%*u" ⊃;
.AT "'U" ⊂ "%6α'%*U" ⊃;
.AT "`a" ⊂ "%6α`%*a" ⊃;
.AT "`e" ⊂ "%6α`%*e" ⊃;
.AT "`o" ⊂ "%6α`%*o" ⊃;
.AT "`u" ⊂ "%6α`%*u" ⊃;
.AT "''" ⊂ "α'" ⊃;
.AT "∧a" ⊂ "%6α∧%*a" ⊃;
.AT "∧e" ⊂ "%6α∧%*e" ⊃;
.AT "∧i" ⊂ "%6α∧%*i" ⊃;
.AT "∧o" ⊂ "%6α∧%*o" ⊃;
.AT "∧u" ⊂ "%6α∧%*u" ⊃;
.AT ",c" ⊂ "%6α,%*c" ⊃;
.AT "+t" ⊂ "%6α+%*t" ⊃;
.AT ",C" ⊂ "%6α,%*C" ⊃;
.AT "+S" ⊂ "%6α+%*S" ⊃;
.AT "-a" ⊂ "%6α-%*a" ⊃;
.AT ":O" ⊂ "%6α:%*O" ⊃;
.AT ":e" ⊂ "%6α:%*e" ⊃;
.AT ":y" ⊂ "%6α:%*y" ⊃;
.AT ":U" ⊂ "%6α:%*U" ⊃;
.AT "'E" ⊂ "%6α'%*E" ⊃;
.AT "'i" ⊂ "%6α'%*i" ⊃;
.AT "''" ⊂ "α'" ⊃;
.AT "'\" ⊂ "α/" ⊃;
.AT "∨r" ⊂ "%6α∨%*r" ⊃;
.AT "∨s" ⊂ "%6α∨%*s" ⊃;
.AT "∨z" ⊂ "%6α∨%*z" ⊃;
.AT "[ALPH]" ⊂ "%4αα%*" ⊃;
.AT "[ARROW]" ⊂ "%4α↓%*" ⊃;
.AT "[DOT]" ⊂ "%4α.%*" ⊃;
.AT "[INF]" ⊂ "%4α∞%*" ⊃;
.
.
.<< Digest number of sides per page and columns per side. >>
.
.  SIDES ← 1;
.<< Set up page frame and COLMNS macro for selected device. >>
.
. VARIABLE PAGE_HEIGHT, PAGE_WIDTH;
.
.  ODDLEFTBORDER←EVENLEFTBORDER←1375;
.  LMARG←0;
.  TOPBORDER←500;
.  PAGE_WIDTH←RMARG←76;
.  PAGE_HEIGHT←54;
.  PAGE FRAME PAGE_WIDTH WIDE PAGE_HEIGHT HIGH;
.   AREA TEXT LINES 4 TO 53;
.  TITLE AREA HEADING LINES 1 TO 3;
.  TITLE AREA FOOTING LINE 54;
.  COLS ← 1;
.  SSNAME ← NULL;
.  PLACE TEXT;
.  NEXT PAGE;
.
.<< Print in //italics/ or ⊗⊗boldface⊗. >>
.
.AT "//" ENTRY "/"
.	⊂
.	LASTFONT1 ← THISFONT;
.	("%2ENTRY%" & LASTFONT1);
.	⊃;
.
.AT "⊗⊗" ENTRY "⊗"
.	⊂
.	LASTFONT2 ← THISFONT;
.	("%3ENTRY%" & LASTFONT2);
.	⊃;
.
.<< Print page headings on XGP (using boldface) before new page started. >>
.
.
.
.RECURSIVE MACRO STANDARD TITLES
.	⊂
.	NOFILL;
.	TURN ON "←→{";
.	PREFACE 0;
.	INDENT 0,0,0;
.	PLACE HEADING;
.	SELECT 3;
.	!EH;
.	PLACE FOOTING;
.	!EF;
.	⊃;
.
.<< Set line spacing to new value. >>
.
.MACRO SPACES(NUMSPACES)
.	⊂
.	IF NUMSPACES > 0
.		THEN
.			START "SET NEW INTER- AND INTRA-PARAGRAPH SPACING"
.			BREAK;
.			PREFACE NUMSPACES;
.			SPACING NUMSPACES-1;
.			END "SET NEW INTER- AND INTRA-PARAGRAPH SPACING"
.		ELSE USERERR("SPACES argument not positive integer");
.	⊃;
.<< Start text justification. >>
.
.MACRO JUSTIFY
.	⊂
.	FILL;
.	ADJUST;
.	RETAIN;
.	⊃;
.
.<< Set up for body of text. >>
.
.  PORTION MAIN
.
.  EVERY HEADING(,,{PAGE!});
.
. SELECT 1;
. JUSTIFY;
. COUNT PAGE FROM 1 TO 999;
. NEXT PAGE;
. SPACES 2;
. INDENT 5;